/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gerenciadorescola.controller.pattern.command;

import gerenciadorescola.model.Aluno;
import gerenciadorescola.model.Escola;
import gerenciadorescola.model.Turma;
import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author Pedro Freitas
 */
public class ComandoBuscaAluno implements Command {

    public Map execute(Map<String, String> entrada) {
        Map<String, String> saida = new HashMap();

        if (buscaAluno(entrada) != null) {
            Map<Integer, Aluno> a = buscaAluno(entrada);

            saida.put("nome", a.get(0).getNome());
            saida.put("cpf", a.get(0).getCpf());
            saida.put("tel", a.get(0).getTelefone());
            saida.put("end", a.get(0).getEndereco());
            saida.put("sexo", a.get(0).getSexo());
            saida.put("matricula", String.valueOf(a.get(0).getMatricula()));
            saida.put("idade", String.valueOf(a.get(0).getIdade()));
            saida.put("lingua",a.get(0).getLingua());
        } else {
            saida.put("msg", "O aluno não pode ser encontrado!");
        }

        return saida;

    }

    public Map<Integer, Aluno> buscaAluno(Map<String, String> entrada) {

        Escola escola = Escola.getInstance();
        Map<Integer, Turma> t = buscaTurma(entrada);

        Map<Integer, Aluno> alunos = t.get(0).getAlunos();

        if (buscaTurma(entrada) != null) {
            int codigo = Integer.parseInt(entrada.get("codigo"));

            for (Map.Entry<Integer, Aluno> a : alunos.entrySet()) {
                if (codigo == a.getKey()) {
                    alunos = new HashMap();
                    alunos.put(0, a.getValue());
                    return alunos;
                }
            }
        }
        
        return null;


    }

    public Map<Integer, Turma> buscaTurma(Map<String, String> entrada) {
        Escola escola = Escola.getInstance();
        Map<Integer, Turma> turmas = escola.getTurmas();
        int codigo = Integer.parseInt(entrada.get("codTurma"));
        for (Map.Entry<Integer, Turma> t : turmas.entrySet()) {
            if (codigo == t.getKey()) {
                turmas = new HashMap();
                turmas.put(0, t.getValue());
                return turmas;
            }
        }
        return null;

    }
}
